package apiv1

import (
	"github.com/gin-gonic/gin"
	"go-shop-api/internal/service"
	"net/http"
)

// UserRegister 注册
func UserRegister(c *gin.Context) {
	var userRegister *service.UserService
	if err := c.ShouldBind(&userRegister); err != nil {
		//// 获取validator.ValidationErrors类型的errors
		//errs, ok := err.(validator.ValidationErrors)
		//if !ok {
		//	// 非validator.ValidationErrors类型错误直接返回
		//	c.JSON(http.StatusBadRequest, serializer.NewResponse(e.InvalidParams, e.TipsOk, err.Error(),nil))
		//	return
		//}
		//
		//// validator.ValidationErrors类型错误则进行翻译
		//c.JSON(http.StatusBadRequest, serializer.NewResponse(e.InvalidParams, e.TipsOk,e.TipsNil, validate.RemoveTopStruct(errs.Translate(validate.GetValidatorTrans()))))
		//return
		//返回验证器验证的错误信息
		c.JSON(http.StatusOK, Validators(err))
		return
	}

	res := userRegister.Register(c.Request.Context())
	c.JSON(http.StatusOK, res)

}

// UserLogin  登录
func UserLogin(c *gin.Context) {
	var userLogin *service.UserLoginService
	//验证
	if err := c.ShouldBind(&userLogin); err != nil {
		//返回验证器验证的错误信息
		c.JSON(http.StatusOK, Validators(err))
		return
	}

	res := userLogin.Login(c.Request.Context())
	c.JSON(http.StatusOK, res)
}

// UserUpdate 修改头像
func UserUpdate(c *gin.Context) {
	var userUpdate *service.UserUpdateService
	//验证
	if err := c.ShouldBind(&userUpdate); err != nil {
		//返回验证器验证的错误信息
		c.JSON(http.StatusOK, Validators(err))
		return
	}
	res := userUpdate.Update(c.Request.Context(), GetUid(c))
	c.JSON(http.StatusOK, res)
}

// Userinfo //获取用户信息 钱包信息，积分信息等
func Userinfo(c *gin.Context) {
	var userinfo *service.UserinfoService
	//验证
	if err := c.ShouldBind(&userinfo); err != nil {
		//返回验证器验证的错误信息
		c.JSON(http.StatusOK, Validators(err))
		return
	}
	res := userinfo.Userinfo(c.Request.Context(), GetUid(c))
	c.JSON(http.StatusOK, res)
}

//
//func UserAdd(c *gin.Context) {
//	var u service.User
//	if err := c.ShouldBind(&u); err != nil {
//		// 获取validator.ValidationErrors类型的errors
//		errs, ok := err.(validator.ValidationErrors)
//		if !ok {
//			// 非validator.ValidationErrors类型错误直接返回
//			c.JSON(http.StatusOK, gin.H{
//				"msg": err.Error(),
//			})
//			return
//		}
//		// validator.ValidationErrors类型错误则进行翻译
//		// 并使用removeTopStruct函数去除字段名中的结构体名称标识
//		c.JSON(http.StatusOK, gin.H{
//			"msg": validate.RemoveTopStruct(errs.Translate(validate.GetValidatorTrans())),
//		})
//		return
//	}
//	// 保存入库等操作...
//
//	c.JSON(http.StatusOK, "success")
//
//}
